home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / disasm.zip / DOSKEYS.BAS < prev    next >
BASIC Source File  |  1988-06-03  |  17KB  |  308 lines

  1. 10 '┌─────────────────────────────────────────────────────────────────────────┐
  2. 20 '│ * DOS FUNCTION KEY EDITOR * (for DOS 2.0 and the ANSI.SYS driver only). │
  3. 30 '├─────────────────────────────────────────────────────────────────────────┤
  4. 50 '│ This program may be copied--free of charge--for any non-commercial use. │
  5. 60 '│ For futher info., contact: Vince Bly, PO Box 409, Ft. Belvoir, VA 22060 │
  6. 70 '└─────────────────────────────────────────────────────────────────────────┘
  7. 80 '
  8. 90 RUN 8000
  9. 100 '───── Read to EOL subroutine ─────
  10. 500 T="": I=0: WHILE RIGHT$(T,2)<>"  " AND I<L
  11. 510 T=T+CHR$(SCREEN(ROW,COL+I)): I=I+1: WEND
  12. 530 I=I-2: T=LEFT$(T,I): RETURN
  13. 540 '
  14. 999 '─────── SCREEN EDITOR ────────────────────────────────────────────────────
  15. 1000 DEFINT A-R: DEFSTR S-W: S="": I=0: COL=9: ROW=13
  16. 1010 BELL$="MB MS L64 O5 T255 C"
  17. 1090 LOCATE ROW,COL,1,6,7: GOSUB 9000' Go set FN definitions
  18. 1095 '
  19. 1400 IF SCREEN (ROW,COL,1)=120 THEN ROW=13
  20. 1410 LOCATE ROW,COL,1
  21. 1500 S=INKEY$: IF S="" THEN 1500
  22. 1510 IF S=>" " THEN 1700'                               standard char.
  23. 1515 IF LEN(S)>1 THEN 1900'                             extended char.
  24. 1520 IF S=CHR$(8) THEN 1800'                            backspace
  25. 1522 IF S=CHR$(9) THEN 2200'                            right tab
  26. 1524 IF S=CHR$(13) THEN 2000'                           return
  27. 1527 IF S=CHR$(10) THEN PRINT CHR$(27);: GOTO 2000'     ctrl. return
  28. 1530 IF S=CHR$(19) THEN S=CHR$(126): GOTO 1700'         trailing space
  29. 1531 IF S=CHR$(27) THEN 2300'                           escape
  30. 1535 IF S<>CHR$(17) THEN 1500 ELSE LOCATE ,,0,6,7: RUN 3000'exit to read screen
  31. 1590 '
  32. 1700 PRINT S;: IF FNRB(COL) THEN COL=COL+1: GOTO 1500'             [std. char.]
  33. 1710 PLAY BELL$: COL=FNHM((COL+27)MOD 80): GOTO 1400
  34. 1800 IF NOT FNLB(COL) THEN 1400 ELSE COL=COL-1'                    [back-space]
  35. 1810 LOCATE ,COL: GOTO 1970
  36. 1900 I= ASC(RIGHT$(S,1))-71: IF I<0 THEN 2100
  37. 1905 ON I GOTO 1940,1910,1910,1930,1910,1920,1910,1980,1950,1910,1960,1970
  38. 1910 IF I=0 THEN ROW=7: COL=FNHM(COL): GOTO 1400'                  [home]
  39. 1915 IF I=46 THEN PRINT SPC(15-COL+FNHM(COL)): GOTO 1400 ELSE 1500'[ctl]-[end]
  40. 1920 IF FNRB(COL) THEN COL=COL+1: GOTO 1400'                       [right]
  41. 1925 IF COL<60 THEN COL=COL+12: GOTO 1400 ELSE COL=9: GOTO 1400
  42. 1930 IF FNLB(COL) THEN COL=COL-1: GOTO 1400'                       [left]
  43. 1935 IF COL>15 THEN COL=COL-12: GOTO 1400 ELSE COL=78: GOTO 1400
  44. 1940 IF ROW>7 THEN ROW=ROW-1: GOTO 1400 ELSE ROW=16: GOTO 1400'    [up]
  45. 1950 IF ROW<16 THEN ROW=ROW+1: GOTO 1400 ELSE ROW=7: GOTO 1400'    [down]
  46. 1960 LOCATE ,,0: L=18-COL+FNHM(COL): GOSUB 500: GOTO 2500'         [insert]
  47. 1970 LOCATE ,,0: COL=COL+1: L=18-COL+FNHM(COL): GOSUB 500'         [delete]
  48. 1975 COL=COL-1: PRINT T" ": GOTO 1400
  49. 1980 LOCATE ,,0: L=18-COL+FNHM(COL): GOSUB 500'                    [end]
  50. 1985 IF I=L-2 THEN 1400 ELSE COL=COL+I: GOTO 1400
  51. 2000 COL=FNHM(COL): GOTO 1950'                                     [enter]
  52. 2100 IF (I<>-56) OR NOT FNLB(COL) THEN 1500'                       [tab left]
  53. 2110 COL=FNHM(COL): GOTO 1400
  54. 2200 COL=FNHM((COL+27)MOD 80): GOTO 1400'                          [tab right]
  55. 2300 COL=FNHM(COL): LOCATE ,COL,0: PRINT SPC(16);: GOTO 1400'      [escape]
  56. 2310 '
  57. 2499 '────── Insert Mode ─────────────
  58. 2500 L=L-3: IF I<L THEN T=T+STRING$(L-I,32)
  59. 2510 LOCATE ,COL,1,0,6
  60. 2520 S=INKEY$: IF S="" THEN 2520
  61. 2530 IF S<" " THEN 2580 ELSE IF NOT FNRB(COL) THEN 2520
  62. 2540 LOCATE,,0: PRINT S;LEFT$(T,L);: L=L-1: COL=COL+1: GOTO 2510
  63. 2580 IF S=CHR$(8) THEN IF FNLB(COL) THEN L=L+1: COL=COL-1: LOCATE ,COL,0: PRINT LEFT$(T,L+1);: GOTO 2510 ELSE 2510
  64. 2590 LOCATE ,,,6,7: IF S=CHR$(0)+"R" THEN 1400 ELSE 1524
  65. 2595 '
  66. 2999 '────── READ SCREEN ROUTINE ──────────────────────────────────────────────
  67. 3000 DEFINT A-R: DEFSTR S-W: T="": I=0: DIM S(23)
  68. 3020 LOCATE 18,1: COLOR 16,7:PRINT " COMPILING ";
  69. 3025 COLOR 15,0: PRINT SPC(60): COLOR 0,15: B=0: C=0: L=18
  70. 3029 FOR COL=9 TO 63 STEP 27
  71. 3030    FOR ROW=7+(6 AND (COL=9)) TO 16
  72. 3040        LOCATE ROW,COL: GOSUB 500
  73. 3043        IF RIGHT$(T,1)=CHR$(126) THEN MID$(T,I,1)=" "
  74. 3048        B=B+I+(3 AND (I>0)): IF B>192 THEN 3095
  75. 3050        S(C)=T: PRINT T: LOCATE 18,12: PRINT B
  76. 3060    C=C+1: NEXT
  77. 3065 NEXT
  78. 3070 LOCATE 18,1,1: COLOR 15,0: PRINT SPC(79);: GOTO 5000
  79. 3090 '
  80. 3095 LOCATE 18,1: PRINT " COMPILED ";: LOCATE ,16: COLOR 16,7: PRINT " ««";
  81. 3097 COLOR 0,15: LOCATE ,19: PRINT " ANSI Buffer Full ": COLOR 15,0: GOTO 5000
  82. 3109 '
  83. 3110 '────── SAVE FILE TO DISK ROUTINE ────────────────────────────────────────
  84. 3111 LOCATE 19,1:PRINT: LOCATE 21,46: COLOR 31,0: PRINT "[1]": COLOR 15,0: GOSUB 9100: LOCATE 19,2: COLOR 15,0
  85. 3112 LINE INPUT "Please enter filename (.KEY will be used as the extension): ";N$
  86. 3113 GOSUB 9200: IF INSTR(N$,"+") THEN LOCATE 22,2: PRINT "Saving aborted";: GOTO 5035
  87. 3114 IF INSTR(N$,"^") THEN 7510 ELSE IF N$="" THEN 5035
  88. 3115 I=INSTR(N$,"."): IF I THEN N$=LEFT$(N$,I)+"KEY" ELSE N$=N$+".KEY"
  89. 3118 OPEN "O",#1,N$: LOCATE 18,1: COLOR 16,7: PRINT " ** SAVING ** ";
  90. 3120 PRINT #1, "INSTALLING "N$
  91. 3125 FOR I=0 TO 23
  92. 3130    T=S(I): L=LEN(T): C$="p"
  93. 3140    IF L=0 THEN 3180
  94. 3150    IF RIGHT$(T,1)=CHR$(27) THEN T=LEFT$(T,L-1): C$=";13p"
  95. 3153    IF T="^C" THEN T=" ": C$=";3p"
  96. 3155    PRINT #1,CHR$(27)"[0;";
  97. 3160    J=65+I+(15 AND (I>3)): IF J<100 THEN F$="##" ELSE F$="###"
  98. 3165    PRINT #1,USING F$;J;
  99. 3170    PRINT #1,";"CHR$(34)T;CHR$(34)C$
  100. 3180 NEXT
  101. 3280 PRINT #1, "DONE"
  102. 3290 CLOSE: LOCATE 18,1: COLOR 0,15: PRINT " ** SAVED "N$" ** "
  103. 3300 COLOR 15,0: GOTO 5000
  104. 3399 '
  105. 3400 '─────────── UNCOMPILE ROUTINE ───────────────────────────────────────────
  106. 3410 LOCATE 18,1: COLOR 15,0: PRINT SPC(50)CHR$(13)
  107. 3420 T=CHR$(29)+CHR$(126): PRINT SPC(60)
  108. 3425 COLOR 15,0: LOCATE ,,0: C=-6
  109. 3430 FOR COL=9 TO 63 STEP 27
  110. 3440    FOR ROW=7 TO 16
  111. 3445        IF COL=9 AND ROW<13 THEN 3490' skip DOS keys
  112. 3450        LOCATE ROW,COL: PRINT S(C);
  113. 3460        IF RIGHT$(S(C),1)=" " THEN PRINT T;
  114. 3470        I=LEN(S(C)): IF I THEN PRINT SPC(16-I);
  115. 3490 C=C+1: NEXT:NEXT
  116. 3500 GOSUB 6520: RUN 1000
  117. 3510 '
  118. 5000 '──────REQUEST USER OPTION ───────────────────────────────────────────────
  119. 5005 COLOR 15: LOCATE 19,1: PRINT SPC(79);SPC(79);: LOCATE 21,1,0
  120. 5010 PRINT SPC(45)"[1]... Save this key file to disk."
  121. 5020 PRINT SPC(45)"[2]... Load a key file from disk."
  122. 5022 PRINT SPC(45)"[3]... Print a hardcopy of keyset."
  123. 5025 PRINT SPC(45)"[4]... Go to the edit mode.";: LOCATE 25,1
  124. 5030 PRINT SPC(45)"[5]... Quit this program.";
  125. 5035 LOCATE 19,1: PRINT SPC(79);: LOCATE 19,2,1
  126. 5040 LINE INPUT"Please choose an option from the list below [1-5]: ",N$
  127. 5045 LOCATE 22,1: PRINT SPC(40);
  128. 5050 I=VAL(N$): IF (I<1) OR (I>5) THEN 5035
  129. 5060 IF I=5 THEN 9300 ELSE IF I=4 THEN 3410
  130. 5070 IF I=3 THEN 8500 ELSE IF I=2 THEN 7010 ELSE 3110
  131. 5080 '
  132. 5999 '──────────────── PRINT EDIT SCREEN ──────────────────────────────────────
  133. 6000 DEFINT A-R: DEFSTR S-W: I=0: DIM S(23)
  134. 6010 'SCREEN 0,0,0: WIDTH 80: COLOR 15,0,8
  135. 6020 CLS: LOCATE 1,,0
  136. 6030 '
  137. 6035 MDL$="│ F## = ": L$=STRING$(2,9)
  138. 6037 MDL$=MDL$+L$+" │ "+MDL$+L$+"    │ "+MDL$+L$+"       │"
  139. 6040 L$=STRING$(24,196)
  140. 6050 TOP$="├"+L$+"┤"
  141. 6070 BOT$="└"+L$+"┘"
  142. 6080 '
  143. 6090 LOCATE ,15: PRINT "╔═════════════════════════════════════════════════╗"
  144. 6110 LOCATE ,15: PRINT "║ *** DOS FUNCTION KEY EDITOR - V. Bly - 4/83 *** ║"
  145. 6115 LOCATE ,15: PRINT "╚═════════════════════════════════════════════════╝"
  146. 6130 LOCATE ,2: PRINT "┌───── Standard Keys ────┐ ┌───── Shifted Keys ─────┐ ┌───── Control Keys ─────┐";
  147. 6140 PRINT TOP$" "TOP$" "TOP$;
  148. 6150 FOR I=1 TO 10
  149. 6160    LOCATE 6+I: PRINT USING MDL$;I;I;I
  150. 6180 NEXT
  151. 6190 LOCATE 17,1: PRINT BOT$" "BOT$" "BOT$: COLOR 8,7
  152. 6191 LOCATE 7,8: PRINT " copy one char    ";
  153. 6192 LOCATE 8,8: PRINT " copy to char     ";
  154. 6193 LOCATE 9,8: PRINT " copy from char   ";
  155. 6195 LOCATE 10,8: PRINT " skip to char     "
  156. 6196 LOCATE 11,8: PRINT " accept template  "
  157. 6197 LOCATE 12,8: PRINT " control-Z        "
  158. 6300 COLOR 15,0: GOTO 5000: GOSUB 6520: RUN 1000
  159. 6310 '
  160. 6520 COLOR 15,0: LOCATE 18,1' ───── Print bottom of edit screen ─────
  161. 6530 PRINT " DO NOT PRESS <Ctrl>[Break], ";: COLO